package com.one2manycall.service;


import com.one2manycall.vo.User;
import com.one2manycall.vo.UserSession;

import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;

/**
 * 在线用户服务接口，定义了对在线用户数据的操作方法,
 */
public interface UserOnlineManageServiceI {

    /**
     * 用户名 和sessiong
     */
     ConcurrentMap<String, User> onlineUsers = new ConcurrentHashMap<>();


    /**
     *
     */
    ConcurrentMap<String, User> onlineTokenUsers = new ConcurrentHashMap<>();

    /**
     * 在线用户登记
     * @param user 要保存的用户对象
     */
    void register(User user);

    /**
     * 根据用户 ID 获取用户信息
     * @param id 用户的 ID
     * @return 对应的用户对象，如果未找到则返回 null
     */
    User getUserById(Long id);


    /**
     * 获取所有用户的信息
     * @return 包含所有用户的列表
     */
    List<User> getAllUsers();


    /**
     * 根据用户 ID 剔除用户
     * @param id 要删除的用户的 ID
     */

    void deleteUser(Long id);


    void deleteUser(String userName);

    /**
     * 根据用户名查询用户
     * @param name
     * @return
     */
    User  findByUsername(String name);

    /**
     * 根据token 查询用户名称
     * @param token
     * @return
     */
    User  findByUserToken(String token);

}